package student.aistar.day01;

/**
 * 本类用来演示: 变量入门
 */
public class VarDemo {
    public static void main(String[] args) {

        //代码的背后
        //1.数据肯定是存储再JVM内存中的
        //2.定义在方法内部的变量 - 局部变量[JVM的栈区]
        //3.局部变量的生命周期是伴随着方法(main)的调用的开始和结束

        VarDemo varDemo = new VarDemo();
        System.out.println(varDemo);

        //讲解的本质
        //流程
        //1.JVM加载VarDemo.class到内存
        //2.JVM找到main方法想要去执行里面的程序
        //3.此处需要申请一块区域来保存数据10
        //   3-1. 区域的大小由前面的数据类型来决定 - int类型 - 区域4个字节32bit的大小
        //   3-2. 栈里面的区域的大小一旦被确定了, 就不能改变 - 肯定有的时候会有内存的浪费
        //   3-3. 虽然空间浪费了, 但是读取的效率会提高 - 典型的"以空间换时间"

        //4.只要是内存中的空间, 这个空间必然会有一个地址, 所以变量的存在是为了给这个区域取了个名字
        // 变量是为了方便用户来通过访问到这个空间存储的具体的那个值的
        Integer i = 1;
        System.out.println(i);

        byte x = 1;//不报错原因: 虽然1为整型, 但1为常量,
        //x = x + 1;报错原因: 因为x为变量, 会为byte一下的数据类型的变量 + 并且1 为int类型 = int类型(大的类型+小的数据类型)=大的数据类型

        int b = 'a';
        //强制类型的转换
        //MaxType 变量1 = 值1;
        //MinType 变量2 = (MinType)变量1;

        System.out.println(b);

        int a = 10;
        char c = 65;
        //char d = a + c;
        System.out.println(a + c);
    }
}
